package rescsa.gob.pe.solicitudrequerimiento.dao;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import rescsa.gob.pe.seguridad.bean.UsuarioBEAN;
import rescsa.gob.pe.solicitudrequerimiento.bean.SolicitudRequerimientoBEAN;

public class MySqlSolicitudRequerimientoDAO implements ISolicitudRequerimientiDAO{
	SqlSessionFactory sqlMapper = null;//obtiene la configuracion del archivo
	{
		String archivo = "ConfiguracionIbatis.xml";//abrea la configuracion
		try {
			Reader reader = Resources.getResourceAsReader(archivo);
			sqlMapper = new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	@Override
	public List<SolicitudRequerimientoBEAN> BuscarSolicitudRequerimientoxEstado(
			String estado) throws Exception {
		SqlSession session = sqlMapper.openSession();
		SolicitudRequerimientoBEAN solicitudrequerimiento = new SolicitudRequerimientoBEAN();
		solicitudrequerimiento.setEstado(estado);
		List lista = null;
		try {
			 lista =session.selectList("dawi.SQL_buscarSolicitudRequerimientoxEstado",solicitudrequerimiento);			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return lista;
	}
	@Override
	public String RegistrarSolcitudRequerimiento(
			SolicitudRequerimientoBEAN solicitudRequerimientoBEAN)
			throws Exception {
		
		
		SqlSession session = sqlMapper.openSession();
		String stroutput ="";
		try {
			stroutput = ""+session.insert("dawi.SQL_registraSolicitudRequerimiento", solicitudRequerimientoBEAN);
			session.commit();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		System.out.println("dao "+stroutput);
		return stroutput;
		
	}
	@Override
	public List<SolicitudRequerimientoBEAN> listarSolicitudes(UsuarioBEAN usuarioBEAN)
			throws Exception {
		// TODO Auto-generated method stub
		SqlSession session = sqlMapper.openSession();
		SolicitudRequerimientoBEAN solicitudrequerimiento = new SolicitudRequerimientoBEAN();
		
		List lista = null;
		try {
			 lista =session.selectList("dawi.SQL_listarBandejaSolicitudes",usuarioBEAN.getC_usuario());			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return lista;
	}
	@Override
	public SolicitudRequerimientoBEAN ObtenerUsuarioconCodigoRuta()throws Exception {
		// TODO Auto-generated method stub
		SqlSession session = sqlMapper.openSession();
		SolicitudRequerimientoBEAN solicitudrequerimiento = null;
		
		
		try {
			solicitudrequerimiento =(SolicitudRequerimientoBEAN)session.selectOne("dawi.SQL_CodigoRutaDocumentos");			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return solicitudrequerimiento;
	}
	@Override
	public SolicitudRequerimientoBEAN ObtenerCartaCambioFechaxId(SolicitudRequerimientoBEAN solicitudRequerimientoBEAN)
			throws Exception {
		SqlSession session = sqlMapper.openSession();
		SolicitudRequerimientoBEAN bean=null;
		
		try {
			bean =(SolicitudRequerimientoBEAN)session.selectOne("dawi.SQL_ObtenerCartaCambioFechaxId",solicitudRequerimientoBEAN);			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return bean;
	}
	@Override
	public List<SolicitudRequerimientoBEAN> listarTodasSolicitudes()
			throws Exception {
		SqlSession session = sqlMapper.openSession();
		SolicitudRequerimientoBEAN solicitudrequerimiento = new SolicitudRequerimientoBEAN();
		
		List lista = null;
		try {
			 lista =session.selectList("dawi.SQL_listarTodasSolicitudes");			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return lista;
	}
	@Override
	public SolicitudRequerimientoBEAN ObtenerSolicitudxId(int id)
			throws Exception {
		SqlSession session = sqlMapper.openSession();
		SolicitudRequerimientoBEAN bean=null;
		
		try {
			bean =(SolicitudRequerimientoBEAN)session.selectOne("dawi.SQL_ObtenerSolicictudxId",id);			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return bean;
	}
	@Override
	public SolicitudRequerimientoBEAN ListarRutasSolcitudes(
			String codigosolicitud) throws Exception {
		SqlSession session = sqlMapper.openSession();
		SolicitudRequerimientoBEAN solicitudrequerimiento = new SolicitudRequerimientoBEAN();
		
		
		try {
			solicitudrequerimiento =(SolicitudRequerimientoBEAN)session.selectOne("dawi.SQL_listarRutasRequerimiento",codigosolicitud);			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return solicitudrequerimiento;
	}
	@Override
	public String ActualizarSolicitudEvaluarSolicitud(String codigo)
			throws Exception {
		SqlSession session = sqlMapper.openSession();
		String stroutput ="";
		try {
			stroutput = ""+session.update("dawi.SQL_updateSolicitudRequerimiento", codigo);
			session.commit();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		System.out.println("dao "+stroutput);
		return stroutput;
	}

}
